#include "exit.h"

void IRAM_ATTR exit_gpio_isr_handler(void *num)
{
    uint32_t gpio_pin = (uint32_t)num;
    if (gpio_pin == BOOT_INTR_GPIO_PIN)
    {
        esp_rom_delay_us(20000);
        if (BOOT_INTR_VALUE == BOOT_INTR_PRES)
        {
            LED_TOGGLE();
        }
    }
}

void exit_init(void)
{
    gpio_config_t exit_init_struct;
    exit_init_struct.pin_bit_mask = 1ULL << BOOT_INTR_GPIO_PIN;
    exit_init_struct.mode = GPIO_MODE_INPUT;
    exit_init_struct.intr_type = GPIO_INTR_NEGEDGE;
    exit_init_struct.pull_up_en = GPIO_PULLUP_ENABLE;
    exit_init_struct.pull_down_en = GPIO_PULLDOWN_DISABLE;
    gpio_config(&exit_init_struct);

    gpio_install_isr_service(ESP_INTR_FLAG_EDGE);
    gpio_isr_handler_add(BOOT_INTR_GPIO_PIN,
                         exit_gpio_isr_handler,
                         (void *)BOOT_INTR_GPIO_PIN);
    gpio_intr_enable(BOOT_INTR_GPIO_PIN);
}